import logging
import os
from common.handle_conf import conf
from common.handle_path import LOG_DIR

def create_log(name = 'mylog',level = 'DEBUG',filename = 'log.log',sh_level = 'DEBUG',fh_level = 'DEBUG'):
    # 1，创建日志收集器
    log = logging.getLogger(name)

    # 2，设置日志收集器收集日志的等级
    log.setLevel(level)

    # 3，设置输出渠道
    # 3.1，输出到文件
    fh = logging.FileHandler(filename, encoding='utf-8')
    fh.setLevel(fh_level)
    log.addHandler(fh)

    # 3.2，输出到控制台
    sh = logging.StreamHandler()
    sh.setLevel(sh_level)
    log.addHandler(sh)

    # 4，设置日志输出的格式
    # log_format = logging.Formatter('%(asctime)s--%(filename)s--%(lineno)d--%(levelname)s--%(message)s')
    fomats = '%(asctime)s--[%(filename)s--%(lineno)d]--%(levelname)s:%(message)s'
    log_format = logging.Formatter(fomats)
    # 设置输出到控制台的日志格式
    sh.setFormatter(log_format)
    # 设置输出到文件的日志格式
    fh.setFormatter(log_format)

    #返回一个日志收集器
    return log

'''
为了避免程序中创建多个日志收集器而导致日志重复记录，
那么我们可以只创建一个日志收集器，别的模块使用时都导入这个日志收集器
'''
my_log = create_log(
    name=conf.get('logging','name'),
    level=conf.get('logging','level'),
    filename=os.path.join(LOG_DIR,conf.get('logging','filename')),
    sh_level=conf.get('logging','sh_level'),
    fh_level=conf.get('logging','fh_level'),   #如果以后需要修改等级的话，那就不用修改代码了，直接修改配置文件就可以了
)